home *** CD-ROM | disk | FTP | other *** search
/ Stone Design / Stone Design.iso / Stone_Friends / Wave / WavesWorld / Source / Shaders / RCShaders / RCShiny.sl < prev    next >
Encoding:
Text File  |  1995-03-22  |  591 b   |  28 lines

  1. /* Listing 16.34  Metal shader with optional environment map*/
  2. surface
  3. RCShiny(
  4.     float    Ka        = .3,
  5.         Ks        = .8,
  6.         roughness    = .05;
  7.     string    mapname = "" )
  8. {
  9.     color ev;
  10.     point D, Nf, NI;
  11.  
  12.     Nf = faceforward(normalize(N), I);
  13.     NI = normalize(I);
  14.  
  15.     if( mapname != "" ) {
  16.         /* compute the environment index direction, D */
  17.         D = reflect(NI, Nf);
  18.         /* convert D to environment space. */
  19.         D = transform("world", point "world" (0,0,0) + D);
  20.         ev = color environment(mapname, D);
  21.     } else
  22.         ev = 0;
  23.  
  24.     Oi = Os;
  25.     Ci = Oi * (Ka * ambient() +
  26.         Ks * (ev + specular(Nf, -NI, roughness)));
  27. }
  28.